<?xml version="1.0" encoding="utf-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" xmlns:xlink="http://www.w3.org/1999/xlink" targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" elementFormDefault="qualified" attributeFormDefault="unqualified">


  <!-- Schema documentation -->
  <annotation>
    <documentation>
      This schema defines attributes and simpleTypes that can be referenced
      from any other part of Maml.
    </documentation>
  </annotation>

  <import schemaLocation="xlink.xsd" namespace="http://www.w3.org/1999/xlink" />
	
  <!-- simpleType declarations -->
  <simpleType name="mediaFileFormatsType">
    <annotation>
      <documentation>
        The mediaFileFormatsType simpleType provides a list of commonly
        used media formats.
      </documentation>
    </annotation>
    <restriction base="token">
      <enumeration value="asx" />
      <enumeration value="bmp" />
      <enumeration value="eps" />
      <enumeration value="flash" />
      <enumeration value="gif" />
      <enumeration value="png" />
      <enumeration value="jpeg" />
      <enumeration value="shockwave" />
      <enumeration value="quicktime" />
      <enumeration value="wma" />
      <enumeration value="wmf" />
      <enumeration value="mpeg" />
      <enumeration value="mp3" />
      <enumeration value="other" />
    </restriction>
  </simpleType>

  <simpleType name="alertTypesType">
    <annotation>
      <documentation>
        The alertTypesType simpleType provides a list of the various types
        of alerts that can be used to describe alerts.
      </documentation>
    </annotation>
    <restriction base="string">
      <enumeration value="note" />
      <enumeration value="caution" />
      <enumeration value="important" />
      <enumeration value="tip" />
      <enumeration value="warning" />
      <enumeration value="security note" />
      <enumeration value="visual basic note" />
      <enumeration value="visual c# note" />
      <enumeration value="visual c++ note" />
      <enumeration value="visual j# note" />
    </restriction>
  </simpleType>

  <simpleType name="devLanguagesType">
    <restriction base="token">
      <enumeration value="cpp" />
      <enumeration value="vb" />
      <enumeration value="vbs" />
      <enumeration value="js" />
      <enumeration value="c#" />
      <enumeration value="j#" />
      <enumeration value="jscript#" />
      <enumeration value="cpp#" />
      <enumeration value="vb#" />
      <enumeration value="xml" />
      <enumeration value="html" />
      <!--<enumeration value="other"/>-->
      <!--<enumeration value="other#"/>-->
      <!-- the following 3 were entered for DDUELocTools bug 1858 -->
      <enumeration value="unstlib" />
      <enumeration value="minterastlib" />
      <enumeration value="mintraastlib" />
      <!-- CAS: added the following for DDUE -->
      <enumeration value="vb-c#" />
      <enumeration value="jscript" />
      <enumeration value="scr" />
    </restriction>
  </simpleType>
			
  <!-- attribute declarations -->
  <attributeGroup name="contentFlavourGroup">
    <annotation>
      <documentation>
        The contentFlavourGroup attribute group provides a set of attributes for describing the 
        general flavour of content.
      </documentation>
    </annotation>

    <attribute name="language" type="token">
      <annotation>
        <documentation>
          The language attribute describes the natural language of a particular part of a document.
        </documentation>
        <documentation>
          This attribute should eventually use a simpleType that provides the list of natural languages.
        </documentation>
      </annotation>
    </attribute>

    <attribute name="userLevel" type="token">
      <annotation>
        <documentation>
          The userLevel attribute describes the level of user that is appropriate for a
          particular part of a document. The level may map to personas or to levels of
          knowledge.
        </documentation>
      </annotation>
    </attribute>

    <attribute name="technology" type="token">
      <annotation>
        <documentation>
          The technology attribute describes one or more technologies to which the 
          content applies.
        </documentation>
      </annotation>
    </attribute>

    <attribute name="textType" default="normal">
      <annotation>
        <documentation>
          The class attribute is used to select the type of content.
        </documentation>
      </annotation>
      <simpleType>
        <restriction base="token">
          <enumeration value="normal" />
          <enumeration value="overview" />
          <enumeration value="prescriptive" />
          <enumeration value="abstract" />
          <enumeration value="conclusion" />
          <enumeration value="legal" />
          <enumeration value="prerequisite" />
          <enumeration value="advertisement" />
        </restriction>
      </simpleType>
    </attribute>
  </attributeGroup>

  <simpleType name="conditionStringType">
    <restriction base="anyURI"></restriction>
  </simpleType>

  <attributeGroup name="addressAttributeGroup">
    <attribute name="address" type="ID">
      <annotation>
        <documentation>
          The address attribute describes the attached content with a unique ID/GUID/URI that 
          can be referenced for sharing, hyperlinking or other purposes.
        </documentation>
      </annotation>
    </attribute>
  </attributeGroup>

  <attributeGroup name="contentIdentificationSharingAndConditionGroup">
    <annotation>
      <documentation>
        The contentIdentificationSharingAndConditionGroup provides a set of attributes for 
        identifying content and for marking it for sharing and conditional filtering.
      </documentation>
    </annotation>

    <attributeGroup ref="maml:addressAttributeGroup" />
		
    <!--<attribute name="condition" type="maml:conditionStringType">
            <annotation>
                <documentation>
                    The value of this attribute is a reference to a condition set that holds one
                    or more conditions that must be met if the element to which this attribute is applied
                    is to be considered 'relevant'. (Relevance may be a build-time or a run-time concept).
                </documentation>
            </annotation>
        </attribute>-->

  </attributeGroup>

  <attributeGroup name="linkingGroup">
    <attribute ref="xlink:href" />
  </attributeGroup>
	
  <!-- complexType declarations -->
  <complexType name="textType">
    <annotation>
      <documentation>
        This type includes the common attributes and allows character data.
      </documentation>
    </annotation>
    <simpleContent>
      <extension base="normalizedString">
        <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup" />
      </extension>
    </simpleContent>
  </complexType>

  <complexType name="emptyType">
    <annotation>
      <documentation>
        The emptyType type is intended for empty element w/o attributes.
        There is no schema type for empty.
      </documentation>
    </annotation>
  </complexType>

</schema>